package xyz.bali16.module.blog.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import xyz.bali16.module.blog.entity.Tag;
import xyz.bali16.module.blog.mapper.TagMapper;
import xyz.bali16.module.blog.model.vo.blog.TagConditionVo;
import xyz.bali16.module.blog.model.vo.blog.TagVo;
import xyz.bali16.module.blog.service.TagService;
import xyz.bali16.module.blog.utils.PageUtils;

import java.util.List;



@Service("TagService")
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {

	@Autowired
	private TagMapper tagMapper;
	@Override
	public List<Tag> findByCondition(TagConditionVo vo) {
		return tagMapper.findByCondition(vo);
	}

	@Override
	public PageUtils queryPage(Integer curPage, Integer pageSize) {
		IPage<Tag> page = this.page(new Page<>(curPage,pageSize));
		return new PageUtils(page);
	}
	/**
	 * 查询标签详情
	 *
	 * @return
	 */
	@Override
	public List<TagVo> queryTagDetails() {
		return this.tagMapper.queryTagDetails();
	}

	/**
	 * 查询单条标签详情
	 *
	 * @return
	 */
	@Override
	public TagVo queryOneTagDetail(Long tagId) {
		return this.tagMapper.queryOneTagDetail(tagId);
	}

	@Override
	public List<TagVo> getLeftAsideFixTag() {
		return this.tagMapper.getLeftAsideFix();
	}

//	private static final String TAGS_CACHE_KEY = "'tag'";
//	private static final String TAGS_CACHE_NAME = "tags";
//
//	@Autowired
//	private TagMapper tagMapper;
//
//	@Override
//	@Cacheable(value = TAGS_CACHE_NAME, key = TAGS_CACHE_KEY)
//	public List<Tag> findTags() {
//		return tagMapper.selectByExample(null);
//	}
//
//	@Override
//	public Tag findByTagId(int linkId) {
//		return tagMapper.selectByPrimaryKey(linkId);
//	}
//
//	@Override
//	@CacheEvict(value = TAGS_CACHE_NAME, allEntries = true, beforeInvocation = true)
//	public void save(Tag tag) throws Exception {
//		tagMapper.insert(tag);
//	}
//
//	@Override
//	@CacheEvict(value = TAGS_CACHE_NAME, allEntries = true, beforeInvocation = true)
//	public void update(Tag tag) throws Exception {
//		tagMapper.updateByPrimaryKeySelective(tag);
//	}
//
//	@Override
//	@CacheEvict(value = TAGS_CACHE_NAME, allEntries = true, beforeInvocation = true)
//	public void remove(int tagId) throws Exception {
//		tagMapper.deleteByPrimaryKey(tagId);
//	}
//
//	@Override
//	public Tag findByTagUrl(String tagUrl) {
//		TagExample tagExample = new TagExample();
//		TagExample.Criteria criteria = tagExample.createCriteria();
//		criteria.andTagUrlEqualTo(tagUrl);
//		return tagMapper.selectByExample(tagExample).get(0);
//	}
//
//	@Override
//	public PageUtils findByCondition(IPage<Log> page, TagConditionVo tagVo) {
//		return null;
//	}

}

